﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UwinEducation.Domain.Entities;
using UwinEducation.Shared.Models;

namespace UwinEducation.Domain.IRepositories
{
    public interface ITeacherScheduleDetailsRepository : IRepository<TeacherScheduleDetails, Guid>
    {
        /// <summary>
        /// 根据ids批量获取课表详情
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<List<TeacherScheduleDetails>> GetByIdsAsync(List<Guid> ids);
        /// <summary>
        /// 批量删除课 表详情
        /// </summary>
        /// <param name="scheduleDetails"></param>
        /// <returns></returns>
        Task DeleteRangeAsync(List<TeacherScheduleDetails> scheduleDetails);
        /// <summary>
        /// 获取课表详情分页列表
        /// </summary>
        /// <param name="pageRequest"></param>
        /// <returns></returns>
        Task<PagedResult<TeacherScheduleDetails>> GetPagedDetailsListAsync(TeacherSchedulePageRequest pageRequest);
        /// <summary>
        /// 获取教师所有课表详情
        /// </summary>
        /// <param name="teacherId"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <returns></returns>
        Task<List<TeacherScheduleDetails>> GetByTeacherIdAsync(Guid teacherId, DateTime startTime, DateTime endTime);
        /// <summary>
        /// 根据教师课表ID获取教师课表详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<List<TeacherScheduleDetails>> GetByTeacherScheduleIdAsync(Guid id);
        /// <summary>
        /// 获取教师课表详情分页列表
        /// </summary>
        /// <param name="pageRequest"></param>
        /// <returns></returns>
        Task<PagedResult<TeacherScheduleDetails>> GetPagedStatisticalDetailsListAsync(TeacherSchedulePageRequest pageRequest);
    }
}


